<?php
/**
 * SESSION处理类
 *
 * @author Mo yi <root@imoi.cn>
 * @link   http://www.imoi.cn
 * @copyright Copyright &copy; 2010-2012 DuoLam Software LLC
 * @license http://www.imoi.cn/license/
 * @version $Id: dpSession.php 1 2012-04-04 13:35:54Z Mo.yi $
 * @package web.helper
 * @since 1.0
 */

class dpSession
{

    /**
     * 构造函数
     *
     * @access public
     * @return void
     */
    public function __construct()
	{
		$this->isOpen() or $this->init();
    }

    protected function init()
    {
        if (empty($_SESSION)) session_start();
        register_shutdown_function(array($this,'close'));
    }

    public function is($name)
    {
        if (!$name) return false;
        return isset($_SESSION[$name]);
    }

    /**
     * 设置session变量的值
     *
     * @access public
     * @param string $key    session变量名
     * @param string $value    session值
     * @return void
     */
    public function set($key, $value)
	{
        $_SESSION[$key]=$value;
    }

    /**
     * 获取某session变量的值
     *
     * @access public
     * @param string $key    session变量名
     * @return mixted
     */
    public function get($key)
	{
		return isset($_SESSION[$key]) ? $_SESSION[$key] : false;
    }

    /**
     * 删除某session的值
     *
     * @access public
     * @return boolean
     */
    public function delete($key)
	{
        if (isset($_SESSION[$key])) {
			unset($_SESSION[$key]);
			return true;
        }
		return false;
    }

    /**
     * 清空session值
     *
     * @access public
     * @return void
     */
    public function clear()
	{
        $_SESSION = array();
    }

    /**
     * 注销session
     *
     * @access public
     * @return void
     */
    public function destory()
	{
        if (session_id()) {
            unset($_SESSION);
            session_destroy();
        }
    }

    /**
     * 当浏览器关闭时,session将停止写入
     *
     * @access public
     * @return void
     */
    public function close()
	{
        if (session_id()) session_write_close();
    }

    /**
     * 获取session id 名称
     *
     * @access public
     * @return string
     */
    public function getName()
	{
        return session_name();
    }

    /**
     * 获取session id
     *
     * @access public
     * @return string
     */
    public function getId()
	{
        return session_id();
    }

    /**
     * 设置session_name.
     *
     * @access public
     * @return void
     */
    public function setName($value) 
	{
		session_name($value);
    }

    /**
     * 设置session_id.
     *
     * @param string $id
     * @return void
     */
    public function setId($id)
	{
        session_id($id);
    }

    /**
     * 设置session文件的存放路径.
     *
     * @access public
     * @param string $value    session文件所存放的路径
     * @return void
     */
    public function setSavePath($value)
	{
		is_dir($value) or dpException::error('SESSION存放的目录不存在：'.$value.', dpSession');
        session_save_path($value);
    }

    /**
     * 获取session文件存放路径.
     *
     * @access public
     * @return void
     */
    public function getSavePath()
	{
        return session_save_path();
    }

    /*
     * 检验session_start是否开启.
     *
     * @return void
     */
    public function isOpen()
	{
        return session_id() ? true : false;
    }

    /**
     * 检验session有效时间.
     *
     * @access public
     * @return intger
     */
    public function getTimeOut()
	{
        return (int)ini_get('session.gc_maxlifetime');
    }

    /**
     * 设置session有最大存活时间.
     *
     * @param string $value
     * @return void
     */
    public function setTimeOut($value)
	{
        ini_set('session.gc_maxlifetime',$value);
    }
}
?>